# -*- coding: utf-8 -*-
'''
Created on Mar 19, 2011

@author: kivson
'''

from django.core import management
import e_citacao.settings as settings
management.setup_environ(settings)


import mwclient
from sint import PAS

from e_citacao.cita.models import Citacao, Tag, Autor

class Gerador(object):
    '''
    Classe que gera o Banco de dados de Citações a partir
    das citações do WikiQuote.
    '''


    def __init__(self, host = 'pt.wikiquote.org'):
        '''
        Construtor.
        '''
        self.host = host
        self.site = mwclient.Site(self.host)


    def getAll(self, prefixo = None):

        qtdProcessada = 0
        for pagina in  self.site.allpages(prefix = prefixo):
            analisador = PAS(pagina)
            analisador.analisa()
            for citacao in analisador.citacoes:
                autorBanco = Autor.objects.get_or_create(nome = citacao.autor)[0]
                citaBanco = Citacao.objects.filter(texto = citacao.conteudo)
                if not citaBanco:
                    citaBanco = Citacao.objects.create(texto = citacao.conteudo, autor = autorBanco)
                else:
                    citaBanco = citaBanco[0]
                for tag in citacao.tags:
                    tagBanco = Tag.objects.get_or_create(nome = tag)[0]
                    citaBanco.tags.add(tagBanco)

                citaBanco.save()
            qtdProcessada += 1
            print "Processado = {0}".format(qtdProcessada)


def main():
    gerado = Gerador()
    gerado.getAll()


if __name__=="__main__":
    main()
